document.addEventListener('DOMContentLoaded', function() {
    console.log("DOM已加载完成，开始初始化");
    // 获取DOM元素
    const form = document.getElementById('healthCardForm');
    const saveDataBtn = document.getElementById('saveDataBtn');
    const previewBtn = document.getElementById('previewBtn');
    const photoInput = document.getElementById('photo');
    const stampInput = document.getElementById('stamp');
    const randomIdBtn = document.getElementById('randomIdBtn');
    const queryBtn = document.getElementById('queryBtn');
    const queryIdInput = document.getElementById('queryId');
    
    // 默认盖章图片 - 使用相对路径
    const DEFAULT_STAMP_IMAGE = "./img/zhang.png";
    
    // 检查按钮是否存在
    console.log("保存按钮存在:", !!saveDataBtn);
    console.log("预览按钮存在:", !!previewBtn);
    console.log("查询按钮存在:", !!queryBtn);
    
    // 验证表单必填项
    function validateForm() {
        // 使用HTML5表单验证
        const isValid = form.checkValidity();
        
        // 如果表单验证不通过，触发浏览器的默认表单验证提示
        if (!isValid) {
            // 创建一个临时提交按钮来触发表单验证
            const tempButton = document.createElement('button');
            tempButton.type = 'submit';
            tempButton.style.display = 'none';
            form.appendChild(tempButton);
            tempButton.click();
            form.removeChild(tempButton);
            
            console.log("表单验证失败");
            return false;
        }
        
        // 照片检查（特殊处理）
        if (!photoData || photoData === '') {
            const photoInput = document.getElementById('photo');
            if (!photoInput.files || photoInput.files.length === 0) {
                showMessage('请上传照片', false);
                photoInput.focus();
                return false;
            }
        }
        
        console.log("表单验证通过");
        return true;
    }
    
    // 获取本地存储的数据并填充表单
    const loadSavedData = function() {
        const savedData = localStorage.getItem('healthCardData');
        if (savedData) {
            try {
                const data = JSON.parse(savedData);
                document.getElementById('name').value = data.name || '';
                document.getElementById('gender').value = data.gender || '男';
                document.getElementById('id').value = data.id || 'Y21348058437';
                document.getElementById('age').value = data.age || '';
                document.getElementById('type').value = data.type || '食品卫生';
                document.getElementById('jobType').value = data.jobType || '流通领域';
                document.getElementById('issueDate').value = data.issueDate || '';
                document.getElementById('validDate').value = data.validDate || '';
                document.getElementById('result').value = data.result || '合格';
                document.getElementById('unit').value = data.unit || '美团外卖';
                document.getElementById('hospital').value = data.hospital || '玉二医健共体集团清港分院';
                
                // 如果有照片数据，显示照片预览
                if (data.photoData) {
                    photoData = data.photoData;
                }
                
                // 如果有章图片数据，保存章图片数据
                if (data.stampData) {
                    stampData = data.stampData;
                }
                
                // 保存唯一ID
                if (data.uniqueId) {
                    window.healthCardUniqueId = data.uniqueId;
                }
                
                console.log("数据已从localStorage加载");
            } catch (e) {
                console.error('加载保存的数据失败:', e);
            }
        } else {
            console.log("没有找到保存的数据");
        }
    };
    
    // 设置当前日期前三天作为默认发证日期
    const today = new Date();
    const threeDaysAgo = new Date(today);
    threeDaysAgo.setDate(today.getDate() - 3);
    const formattedDate = threeDaysAgo.toISOString().substr(0, 10);
    document.getElementById('issueDate').value = formattedDate;
    
    // 设置默认有效期为发证日期一年后
    const nextYear = new Date(threeDaysAgo);
    nextYear.setFullYear(threeDaysAgo.getFullYear() + 1);
    document.getElementById('validDate').value = nextYear.toISOString().substr(0, 10);
    
    // 生成唯一ID
    function generateUniqueId() {
        return Date.now().toString(36) + Math.random().toString(36).substr(2);
    }
    
    // 生成随机编号（保持Y213前缀不变）
    function generateRandomId() {
        const prefix = 'Y213';
        let randomPart = '';
        for (let i = 0; i < 8; i++) {
            randomPart += Math.floor(Math.random() * 10);
        }
        const randomId = prefix + randomPart;
        console.log("生成随机编号:", randomId);
        return randomId;
    }
    
    // 随机编号按钮点击事件
    if (randomIdBtn) {
        console.log("找到随机按钮，添加点击事件");
        randomIdBtn.addEventListener('click', function(e) {
            console.log("随机按钮被点击");
            e.preventDefault(); // 防止表单提交
            const randomId = generateRandomId();
            document.getElementById('id').value = randomId;
            console.log("设置编号值为:", randomId);
        });
    } else {
        console.error("未找到随机按钮元素");
    }
    
    // 处理照片上传和预览
    let photoData = '';
    photoInput.addEventListener('change', function(e) {
        const file = e.target.files[0];
        if (file) {
            const reader = new FileReader();
            reader.onload = function(event) {
                photoData = event.target.result;
                console.log("照片已加载");
            };
            reader.readAsDataURL(file);
        }
    });
    
    // 处理章图片上传
    let stampData = '';
    stampInput.addEventListener('change', function(e) {
        const file = e.target.files[0];
        if (file) {
            const reader = new FileReader();
            reader.onload = function(event) {
                stampData = event.target.result;
                console.log("章图片已加载");
            };
            reader.readAsDataURL(file);
        }
    });
    
    // 收集表单数据
    function collectFormData() {
        console.log("开始收集表单数据");
        const formData = new FormData(form);
        const healthCardData = {};
        
        for (const [key, value] of formData.entries()) {
            if (key !== 'photo' && key !== 'stamp') {
                healthCardData[key] = value;
            }
        }
        
        // 添加唯一ID和照片数据
        healthCardData.uniqueId = window.healthCardUniqueId || generateUniqueId();
        window.healthCardUniqueId = healthCardData.uniqueId;
        healthCardData.photoData = photoData;
        
        // 设置盖章图片数据
        if (stampData && stampData.length > 0) {
            // 如果用户上传了盖章图片，使用上传的图片
            healthCardData.stampData = stampData;
            console.log("使用用户上传的盖章图片");
        } else {
            // 否则使用默认盖章图片
            healthCardData.stampData = DEFAULT_STAMP_IMAGE;
            console.log("使用默认盖章图片:", DEFAULT_STAMP_IMAGE);
        }
        
        healthCardData.createTime = new Date().toISOString(); // 添加创建时间
        
        console.log("表单数据收集完成:", Object.keys(healthCardData).join(", "));
        return healthCardData;
    }
    
    // 保存健康证数据
    saveDataBtn.addEventListener('click', async function(e) {
        console.log("保存按钮被点击");
        e.preventDefault(); // 防止表单提交
        
        // 验证表单
        if (!validateForm()) {
            showMessage('请填写所有必填项', false);
            return;
        }
        
        try {
            const healthCardData = collectFormData();
            
            // 优先使用数据库API保存数据
            if (window.healthCardApi) {
                try {
                    console.log("开始保存健康证到数据库...");
                    let result;
                    
                    // 检查是否存在uniqueId，决定是创建新记录还是更新
                    if (healthCardData.uniqueId) {
                        // 先检查数据库中是否已存在该记录
                        const existingCard = await window.healthCardApi.getCard(healthCardData.uniqueId);
                        
                        if (existingCard && !existingCard.error) {
                            // 更新已有记录
                            console.log("健康证已存在，开始更新...");
                            result = await window.healthCardApi.updateCard(healthCardData.uniqueId, healthCardData);
                        } else {
                            // 创建新记录
                            console.log("健康证不存在，开始创建...");
                            result = await window.healthCardApi.createCard(healthCardData);
                        }
                    } else {
                        // 没有uniqueId，直接创建新记录
                        console.log("创建新健康证...");
                        result = await window.healthCardApi.createCard(healthCardData);
                    }
                    
                    if (result.error) {
                        throw new Error(result.error);
                    }
                    
                    console.log("健康证数据已保存到数据库", result);
                    
                    // 保存成功后，仅在localStorage中保存最小必要信息（不含照片和盖章数据）
                    try {
                        // 创建精简版数据用于本地存储
                        const minimalData = {
                            uniqueId: healthCardData.uniqueId,
                            id: healthCardData.id,
                            name: healthCardData.name,
                            gender: healthCardData.gender,
                            age: healthCardData.age,
                            type: healthCardData.type,
                            jobType: healthCardData.jobType,
                            issueDate: healthCardData.issueDate,
                            validDate: healthCardData.validDate,
                            result: healthCardData.result,
                            unit: healthCardData.unit,
                            hospital: healthCardData.hospital,
                            createTime: healthCardData.createTime
                        };
                        
                        // 保存精简版数据到localStorage
                        localStorage.setItem('healthCardData', JSON.stringify(minimalData));
                        
                        // 更新索引
                        saveMinimalToHealthCardIndex(minimalData);
                        
                        console.log("精简版健康证数据已保存到localStorage");
                    } catch (localError) {
                        console.error("保存精简版数据到localStorage失败:", localError);
                        // 不阻止流程继续，因为数据已保存到数据库
                    }
                    
                    // 页面显示保存成功提示
                    showMessage('保存成功！数据已同步到数据库', true);
                    
                } catch (apiError) {
                    console.error("保存到数据库失败:", apiError);
                    showMessage(`保存失败: ${apiError.message}`, false);
                }
            } else {
                // 数据库API不可用，尝试保存到localStorage（不推荐）
                console.warn("数据库API不可用，尝试保存到localStorage");
                try {
                    // 保存精简版数据到localStorage
                    const minimalData = {
                        uniqueId: healthCardData.uniqueId,
                        id: healthCardData.id,
                        name: healthCardData.name,
                        // 其他基本信息
                        gender: healthCardData.gender,
                        age: healthCardData.age,
                        type: healthCardData.type,
                        jobType: healthCardData.jobType,
                        issueDate: healthCardData.issueDate,
                        validDate: healthCardData.validDate,
                        result: healthCardData.result,
                        unit: healthCardData.unit,
                        hospital: healthCardData.hospital,
                        createTime: healthCardData.createTime,
                        // 仅保存缩略版图片数据或URL
                        photoData: healthCardData.photoData ? '(图片已保存到数据库)' : '',
                        stampData: healthCardData.stampData ? '(图片已保存到数据库)' : ''
                    };
                    
                    localStorage.setItem('healthCardData', JSON.stringify(minimalData));
                    saveMinimalToHealthCardIndex(minimalData);
                    
                    showMessage('保存成功！(本地存储)', true);
                } catch (localError) {
                    console.error("保存到localStorage失败:", localError);
                    showMessage(`本地保存失败: ${localError.message}`, false);
                }
            }
        } catch (error) {
            console.error("保存数据时出错:", error);
            // 页面显示保存失败提示
            showMessage('保存失败: ' + error.message, false);
        }
    });
    
    // 保存健康证数据到索引（精简版）
    function saveMinimalToHealthCardIndex(data) {
        // 从localStorage获取现有索引
        let healthCardIndex = localStorage.getItem('healthCardIndex');
        let indexData = {};
        
        if (healthCardIndex) {
            try {
                indexData = JSON.parse(healthCardIndex);
            } catch (e) {
                console.error("解析索引数据失败，创建新索引");
                indexData = {};
            }
        }
        
        // 使用唯一ID作为键，将部分健康证信息存储到索引中
        indexData[data.uniqueId] = {
            id: data.id,
            name: data.name,
            createTime: data.createTime || new Date().toISOString(),
            type: data.type,
            validDate: data.validDate
        };
        
        // 保存索引到localStorage
        localStorage.setItem('healthCardIndex', JSON.stringify(indexData));
        console.log("健康证索引已更新");
    }
    
    // 显示消息提示
    function showMessage(message, isSuccess) {
        // 检查是否存在消息容器，如果不存在则创建一个
        let messageContainer = document.getElementById('messageContainer');
        if (!messageContainer) {
            messageContainer = document.createElement('div');
            messageContainer.id = 'messageContainer';
            messageContainer.style.position = 'fixed';
            messageContainer.style.top = '20px';
            messageContainer.style.left = '50%';
            messageContainer.style.transform = 'translateX(-50%)';
            messageContainer.style.zIndex = '1000';
            messageContainer.style.width = '80%';
            messageContainer.style.maxWidth = '400px';
            document.body.appendChild(messageContainer);
        }
        
        // 创建消息元素
        const messageElement = document.createElement('div');
        messageElement.className = isSuccess ? 'message-success' : 'message-error';
        messageElement.classList.add('page-message');
        messageElement.textContent = message;
        
        // 添加到容器中
        messageContainer.appendChild(messageElement);
        
        // 设置淡入效果
        setTimeout(() => {
            messageElement.style.opacity = '1';
        }, 10);
        
        // 设置自动消失
        setTimeout(() => {
            messageElement.style.opacity = '0';
            setTimeout(() => {
                if (messageElement.parentNode === messageContainer) {
                    messageContainer.removeChild(messageElement);
                }
            }, 300);
        }, 3000);
    }
    
    // 查询健康证
    function queryHealthCard(uniqueId) {
        console.log("开始查询健康证，ID:", uniqueId);
        
        if (!uniqueId) {
            showMessage('请输入健康证ID', false);
            return;
        }
        
        // 先检查索引中是否存在该ID
        const healthCardIndex = localStorage.getItem('healthCardIndex');
        if (!healthCardIndex) {
            showMessage('未找到任何健康证记录', false);
            return;
        }
        
        try {
            const indexData = JSON.parse(healthCardIndex);
            
            if (!indexData[uniqueId]) {
                showMessage('未找到该健康证ID的记录', false);
                return;
            }
            
            // 从单独存储中获取完整数据
            const completeData = localStorage.getItem('healthCard_' + uniqueId);
            if (!completeData) {
                // 如果找不到完整数据，使用索引中的简要数据
                showMessage('找到健康证记录，但数据不完整，即将跳转...', false);
                setTimeout(() => {
                    // 将索引数据保存到当前健康证数据中
                    localStorage.setItem('healthCardData', JSON.stringify(indexData[uniqueId]));
                    // 跳转到预览页面
                    window.location.href = 'preview.html?id=' + uniqueId;
                }, 2000);
                return;
            }
            
            // 将完整数据保存到当前健康证数据中
            localStorage.setItem('healthCardData', completeData);
            
            showMessage('健康证查询成功，即将跳转到预览页面...', true);
            
            // 两秒后跳转到预览页面
            setTimeout(function() {
                window.location.href = 'preview.html?id=' + uniqueId;
            }, 2000);
            
        } catch (error) {
            console.error("查询健康证失败:", error);
            showMessage('查询失败: ' + error.message, false);
        }
    }
    
    // 查询按钮点击事件
    if (queryBtn && queryIdInput) {
        queryBtn.addEventListener('click', function(e) {
            e.preventDefault();
            const uniqueId = queryIdInput.value.trim();
            queryHealthCard(uniqueId);
        });
        
        // 回车键触发查询
        queryIdInput.addEventListener('keypress', function(e) {
            if (e.key === 'Enter') {
                e.preventDefault();
                const uniqueId = queryIdInput.value.trim();
                queryHealthCard(uniqueId);
            }
        });
    } else if (queryBtn) {
        console.error("未找到查询ID输入框");
    } else {
        console.log("未找到查询按钮");
    }
    
    // 跳转到预览页面
    previewBtn.addEventListener('click', async function(e) {
        console.log("预览按钮被点击");
        e.preventDefault(); // 防止表单提交
        
        // 验证表单
        if (!validateForm()) {
            showMessage('请填写所有必填项，才能查看预览', false);
            return;
        }
        
        try {
            // 收集表单数据
            const healthCardData = collectFormData();
            
            // 优先使用数据库API保存数据
            if (window.healthCardApi) {
                try {
                    console.log("开始保存健康证到数据库...");
                    let result;
                    
                    // 检查是否存在uniqueId，决定是创建新记录还是更新
                    if (healthCardData.uniqueId) {
                        // 先检查数据库中是否已存在该记录
                        const existingCard = await window.healthCardApi.getCard(healthCardData.uniqueId);
                        
                        if (existingCard && !existingCard.error) {
                            // 更新已有记录
                            result = await window.healthCardApi.updateCard(healthCardData.uniqueId, healthCardData);
                        } else {
                            // 创建新记录
                            result = await window.healthCardApi.createCard(healthCardData);
                        }
                    } else {
                        // 没有uniqueId，直接创建新记录
                        result = await window.healthCardApi.createCard(healthCardData);
                    }
                    
                    if (result.error) {
                        throw new Error(result.error);
                    }
                    
                    console.log("健康证数据已保存到数据库", result);
                    
                    // 保存成功后，仅在localStorage中保存最小必要信息
                    try {
                        // 创建精简版数据用于本地存储
                        const minimalData = {
                            uniqueId: healthCardData.uniqueId,
                            id: healthCardData.id,
                            name: healthCardData.name
                        };
                        
                        // 保存精简版数据到localStorage，仅用于跳转目的
                        localStorage.setItem('healthCardData', JSON.stringify(minimalData));
                    } catch (localError) {
                        console.error("保存精简版数据到localStorage失败:", localError);
                        // 不阻止流程继续，因为数据已保存到数据库
                    }
                    
                    // 跳转到预览页面
                    window.location.href = 'preview.html?id=' + healthCardData.uniqueId;
                    
                } catch (apiError) {
                    console.error("保存到数据库失败:", apiError);
                    showMessage(`保存失败，无法预览: ${apiError.message}`, false);
                }
            } else {
                // 数据库API不可用，尝试使用localStorage（不推荐）
                console.warn("数据库API不可用，尝试使用localStorage");
                
                try {
                    // 保存精简版数据
                    const minimalData = {
                        uniqueId: healthCardData.uniqueId,
                        id: healthCardData.id,
                        name: healthCardData.name,
                        // 其他基本信息
                        gender: healthCardData.gender,
                        age: healthCardData.age,
                        type: healthCardData.type,
                        jobType: healthCardData.jobType,
                        issueDate: healthCardData.issueDate,
                        validDate: healthCardData.validDate,
                        result: healthCardData.result,
                        unit: healthCardData.unit,
                        hospital: healthCardData.hospital,
                        createTime: healthCardData.createTime
                    };
                    
                    localStorage.setItem('healthCardData', JSON.stringify(minimalData));
                    saveMinimalToHealthCardIndex(minimalData);
                    
                    // 跳转到预览页面
                    window.location.href = 'preview.html?id=' + healthCardData.uniqueId;
                } catch (localError) {
                    console.error("保存到localStorage失败:", localError);
                    showMessage(`本地保存失败，无法预览: ${localError.message}`, false);
                }
            }
        } catch (error) {
            console.error("预览跳转时出错:", error);
            showMessage('跳转到预览页面失败: ' + error.message, false);
        }
    });
    
    // 页面加载时，尝试从localStorage加载数据
    loadSavedData();
    console.log("页面初始化完成");
}); 